#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_pushButton_clicked()
{
    QJsonObject json;
    //添加基本数据类型
    json["name"]="Alice";
    json["age"]=18;
    json["married"]=true;
    //创建嵌套对象

    QJsonObject addressobj;
    addressobj["city"]="Hangzhou";
    addressobj["country"]="China";
    json["address"]=addressobj;
    //创建json文档
    QJsonDocument jsonDoc(json);

    //写入文件

    QFile file("data.json");
    if(!file.open(QIODevice::WriteOnly))
    {
        qDebug()<<"打开文件失败";
        return;
    }
    file.write(jsonDoc.toJson(QJsonDocument::Indented));//序列化转为字符串,格式化输出
    file.close();


    QMessageBox::information(this,"提示","打开文件成功");//需要两个提示符
}

void MainWindow::on_pushButton_2_clicked()
{       QString content;
        QFile file("data.json");
            if(!file.open(QIODevice::ReadOnly))
            {
                qDebug()<<"打开文件失败";
                return;
            }
            content=file.readAll();
                file.close();
                    //解析JSON数据,formjson
                    QJsonParseError parseError;
                        //用QByteArray == QString.toUtf8()JSON 标准要求使用 UTF-8 编码，使用 QByteArray 可以直接处理原始 UTF-8 数据，避免不必要的编码转换。
                        QJsonDocument jsondoc=QJsonDocument::fromJson(content.toUtf8(),&parseError);

                            if(parseError.error!=QJsonParseError::NoError||jsondoc.isEmpty())
                            {
                                // 处理 JSON 解析错误
                                qDebug() << "JSON parse error:" << parseError.errorString();
                                return;
                            }
                            //将JSON文档转json对象
                            QJsonObject jsonObject=jsondoc.object();
                                //将内容根据键提取出来
                                QString name=jsonObject.value("name").toString().toUtf8().data();
                                    int age=jsonObject.value("age").toInt();
                                        bool married=jsonObject.value("married").toBool();
                                            QJsonValue adr=jsonObject.value("address");
                                                if(adr.isUndefined())
                                                {
                                                    qDebug()<<"接口错误，请重新检查?";
                                                    QMessageBox::critical(this,"错误","接口错误，请重新检查?");
                                                    exit(100);
                                                }
                                                QJsonObject adrobj=adr.toObject();
                                                    QString city=adrobj.value("city").toString();
                                                        QString country=adrobj.value("country").toString();

                                                            qDebug()<<"姓名："<<name;
                                                                qDebug()<<"年龄："<<age;
                                                                    qDebug()<<"婚姻状态："<<married;
                                                                        qDebug()<<"城市："<<city;
                                                                            qDebug()<<"国家："<<country;


                                                                                QMessageBox::information(this,"打开文件","读取成功");











}
